/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	motor_act.c
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-08-23
**	Function List： 
**  History:         
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/

#include "process_tmr.h"
#include "log_console.h"


/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              	结构体定义
*********************************************************************************************************
*/

 
/*
*********************************************************************************************************
*                                              	函数原型声明
*********************************************************************************************************
*/
static uint8_t process_tmr_func(void* arg);
/*
*********************************************************************************************************
*                                              	全局变量定义
*********************************************************************************************************
*/
extern __IO uint64_t LocalTime;
/*
*********************************************************************************************************
*                                              	模块静态变量定义
*********************************************************************************************************
*/



/*
*********************************************************************************************************
*                                              	函数定义
*********************************************************************************************************
*/
uint8_t process_tmr(uint32_t delay_ms,schedule_cb_t* p_tcb)
{
	ASSERT(p_tcb);
	if(delay_ms == 0)
		return 0;
	act_t* p_act = list_new(&p_tcb->send_list);
	if(p_act == NULL)
	{
		Critical_Log("Act node create failed!\r\n");
		return 0;
	}
	memset(p_act, 0, sizeof(act_t));
	
	p_act->p_tcb = p_tcb;
	p_act->arg[ACT_PARA_DELAY_MS_INDEX]	= delay_ms;
	p_act->func = process_tmr_func;
	list_push(&p_tcb->send_list, p_act);	

	return 0;	
}


static uint8_t process_tmr_func(void* arg)
{
	act_t* p_act = (act_t*)arg;
	uint32_t delay_ms=p_act->arg[ACT_PARA_DELAY_MS_INDEX];
	/*start time 为0 表示刚刚被调用*/
	if(p_act->arg[ACT_PARA_START_TIME_INDEX] == 0)
	{
		p_act->arg[ACT_PARA_START_TIME_INDEX] = LocalTime;
		return ACT_RLT_NONE;
	}
	
	if((LocalTime - p_act->arg[ACT_PARA_START_TIME_INDEX]) > delay_ms)
	{
		return ACT_RLT_DEL;
	}
	return ACT_RLT_NONE;
}